A “virtual machine” or a “VM” refers to a specific software-based implementation of a machine in a virtualization environment, in which the hardware resources of a real computer (e.g., CPU, memory, etc.) are virtualized or transformed into the underlying support for the fully functional virtual machine that can run its own operating system and applications on the underlying physical resources just like a real computer.
Virtualization works by inserting a thin layer of software directly on the computer hardware or on a host operating system. This layer of software contains a virtual machine monitor or “hypervisor” that allocates hardware resources dynamically and transparently. Multiple operating systems run concurrently on a single physical computer and share hardware resources with each other. By encapsulating an entire machine, including CPU, memory, operating system, and network devices, a virtual machine is completely compatible with most standard operating systems, applications, and device drivers. Most modern implementations allow several operating systems and applications to safely run at the same time on a single computer, with each having access to the resources it needs when it needs them.
Virtualization allows one to run multiple virtual machines on a single physical machine, with each virtual machine sharing the resources of that one physical computer across multiple environments. Different virtual machines can run different operating systems and multiple applications on the same physical computer.
One reason for the broad adoption of virtualization in modern business and computing environments is because of the resource utilization advantages provided by virtual machines. Without virtualization, if a physical machine is limited to a single dedicated operating system, then during periods of inactivity by the dedicated operating system the physical machine is not utilized to perform useful work. This is wasteful and inefficient if there are users on other physical machines which are currently waiting for computing resources. To address this problem, virtualization allows multiple VMs to share the underlying physical resources so that during periods of inactivity by one VM, other VMs can take advantage of the resource availability to process workloads. This can produce great efficiencies for the utilization of physical devices, and can result in reduced redundancies and better resource cost management.
In many current applications, VMs are run in clusters, each of which may comprise dozens, hundreds, or even thousands of VMs located on multiple hosts or servers. Different VMs in the same cluster may be configured with different properties, such as amount of memory allocated to the VM, operating system run by the VM, etc.
At any given time, a number of VMs in the cluster may experience problems leading to errors or warnings, such as low memory, data corruption, etc. These errors or warnings may generate alerts, which can be received by a system administrator or other personnel. The system administrator may review the alerts in order to determine what type of remedial action to take. For example, a low-memory alert may be remedied by purchasing additional memory.
However, if a high number of alerts are received, it may be difficult for the system administrator to sort through the many alerts generated by the various VMs in the cluster. In addition, a system administrator may to determine common characteristics of the VMs that are generating alerts, in order to identify potential causes and solutions.
Therefore, there is a need for an improved approach to implement sorting and bucketization of alerts in a virtualization environment.